<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
</head>

<body>
    <script>
        // 1、js一共有多少种数据类型?

        // 2、js检测数据类型有哪些方法?

        // 3、undefined和null的区别?	用typeof检测它们分别返回什么值?

        // 4、写出下列对应结果
        var str = "0";
        var str1 = "";
        var str2 = " ";
        var unde = undefined;
        var nu = null;
        var num = 0;
        var num1 = -10;

        Boolean(str);
        Boolean(str1);
        Boolean(str2);
        Boolean(unde);
        Boolean(nu);
        Boolean(num);
        Boolean(num1);

        // 5、写出下列对应结果	注意：需要分别使用Number、String、toString去转换数据类型
        var str = "0";
        var num = -10;
        var flag = true;
        var ud = undefined;
        var nu = null;

        // 6、检测下面的变量各自的数据类型
        var str = "";
        var num = "-10";
        var num1 = 0;
        var nu = undefined;
        var nu1 = "undefined";
        var nu1 = "null";
        var nu2 = null;
        var obj = "{}";
        var obj1 = {};
    </script>

    <h1>1.</h1>
    <p>字符串(string)、数字(number)、布尔值(boolean)、未定义(undefined)、空值(null)、唯一(Symbol)、对象(object)、数组(Array)、函数(function)</p>

    <h1>2.</h1>
    <p>typeof 可以判断 boolean,number,string,undefined 以及 function，但是对于 null，array，object 都检测为 object 无法进一步判断出来<br> instanceof 返回值为 true/false,无法检测出 null 和 undefined，而且对于不是 new 声明的变量无法判断 <br> Object.prototype.toString.call 最佳方法</p>

    <h1>3.</h1>
    <P>Null 只有一个值，是 null。不存在的对象。<br> Undefined 只有一个值,是undefined。没有初始化。undefined 是从 null 中派生出来的。<br> undefined object</P>

    <h1>4.</h1>
    <p>true<br> flase
        <br> true
        <br> flase
        <br> flase
        <br> flase
        <br> true
    </p>

    <h1>5.</h1>
    <p>0 '0' '0' <br> -10 '-10' '-10'<br> 1 true true <br> NaN null 报错<br> 0 undefined 报错 <br>
    </p>

    <h1>6.</h1>
    <p>console.log(Object.prototype.toString.call(str)); [object String]<br> console.log(Object.prototype.toString.call(num)); [object String]<br> console.log(Object.prototype.toString.call(num1)); [object Number]<br> console.log(Object.prototype.toString.call(nu));
        [object Undefined]<br> console.log(Object.prototype.toString.call(nu1)); [object String]<br> console.log(Object.prototype.toString.call(nu1));[object String]<br> console.log(Object.prototype.toString.call(nu2)); [object Null]<br> console.log(Object.prototype.toString.call(obj));[object
        String]
        <br> console.log(Object.prototype.toString.call(obj1)); [object Object]
    </p>
</body>

</html>